Qu'est-ce que expression must have integral or unscoped enum type ?

"expression must have integral or unscoped enum type" est un message d'erreur que l'on peut rencontrer lorsqu'on travaille avec des expressions et des types en programmation informatique, en particulier dans les langages de programmation C++ ou C.

Ce message d'erreur indique que l'expression utilisée dans le code doit être d'un type intégral ou d'un type énuméré non muni de portée. Les types intégraux comprennent des types comme int, char, unsigned int, etc.

En d'autres termes, lorsqu'on essaie d'évaluer une expression, le compilateur vérifie son type et s'assure qu'il correspond à ce qui est attendu pour cette expression spécifique. Si l'expression n'est pas d'un type intégral ou d'un type énuméré non muni de portée, le compilateur générera l'erreur "expression must have integral or unscoped enum type".

Voici un exemple simplifié pour illustrer cette erreur :

int main() {
    // Déclaration d'une variable de type float
    float number = 3.14;

    // Tentative d'utiliser la fonction sizeof() avec une expression de type float
    int size = sizeof(number);  // Erreur : expression must have integral or unscoped enum type

    return 0;
}

Dans cet exemple, la fonction sizeof() est utilisée pour obtenir la taille en octets de la variable number. Cependant, la fonction sizeof() nécessite une expression de type intégral ou un type énuméré non muni de portée. Comme number est de type float, qui est un type à virgule flottante, le compilateur génère une erreur.

Pour corriger cette erreur, on peut soit changer le type de la variable number en un type intégral, soit utiliser une autre fonction/document qui accepte des types à virgule flottante.